#ifndef BAS_BAS_ITERATOR_PRIVATE_H
#define BAS_BAS_ITERATOR_PRIVATE_H

/**
 * 迭代器类型
 */
typedef enum
{
    ITERATOR_INPUT,          ///<输入迭代器
    ITERATOR_OUTPUT,         ///<输出迭代器
    ITERATOR_FORWARD,        ///<前向迭代器
    ITERATOR_BIDIRECTIONAL,  ///<双向迭代器
    ITERATOR_RANDOM_ACCESS   ///<随机访问迭代器
} E_IteratorType;

/**
 * 容器类型
 */
typedef enum
{
    CONTAINER_VECTOR,        ///<动态数组
    CONTAINER_LIST,          ///<双向链表
    CONTAINER_HASH_MAP       ///<哈希映射
} E_ContainerType;

/**
 * 迭代器
 */
typedef struct T_Iterator_tag
{    
    union
    {
        void            *pvBasicPos;     ///<用于Vector容器, List容器, HashMap容器
    } tPos;                              ///<迭代器当前指向的元素在容器中的位置
    void            *pvContainer;        ///<迭代器属于的容器
    E_IteratorType  eIteratorType;       ///<迭代器类型
    E_ContainerType eContainerType;      ///<容器类型
} T_Iterator;

#endif
